By industry convention, most laser page printers have a resolution of 300 horizontal by 300 vertical dots per inch. If a full page print image buffer is used to achieve this resolution, approximately one megabyte of memory is required for an 8.5.times.11 in. page, and over 1.25 megabyte for a legal size page. Thus, a full page print image buffer approach requires that the manufacturer design in a large amount of relatively costly memory hardware into the laser printer. Most laser printer manufacturers, however, use a banded, or partial page, print buffer approach to reduce the amount of memory hardware required. Using the banded print buffer approach, a page is broken into smaller bands that are imaged as the page is being printed. Typically, 64 Kbytes or less of memory is broken into two print buffers, and while one band is being printed, the other band is being imaged, the process repeating itself until the entire page is printed.
While the banded print buffer approach significantly reduces the memory hardware required, it also introduces significant processing complications. Most laser printer systems employ hardware called bit block transfer units to assist the processor in moving blocks of image data from system memory into the print image buffer. If the image data blocks that are being transferred exceed boundaries of the available band buffer, they get sliced or clipped, and the remainder of the block cannot be transferred until the next band becomes available for imaging.
Currently available bit block transfer units generate an interrupt to the processor when an image being transferred into the band buffer overflows the current band. The processor then executes an interrupt service routine that reads all of the internal registers of the transfer unit to determine where in the block the overflow occurred, and then saves those parameters in memory so the block transfer can be restarted and completed when the next band becomes available. Each character or image data block that overflows the band buffer boundary interrupts the processor, and therefore requires attention. The interrupt and the execution of the interrupt service routine results in real time use of processor overhead. Not only does this waste precious processor time, but may also result in a system error. If the print engine remains running (continuing the printing operation), the processor may not be able to complete the required tasks necessary to maintain orderly control of the print engine and the data flow to it, and a system error may result. Finally, since the control circuitry is less dependent on CPU service, more complex pages can be printed.
Thus, a need has arisen for a means to handle the overflow of image data blocks being transferred into the band buffer, without a heavy demand on system processor overhead.